package com.example.algorithm.array;

/**
 * @author : zhy
 * 移除数组中指定的元素
 * @since : 2022/7/21
 */
public class RemoveArray {

    /**
     * 返回最终数组的长度
     * @param nums
     * @param val
     * @return  (暴力解法)
     */
    public int removeElement(int[] nums, int val) {
        int len=nums.length;
        for(int i=0;i<len;i++)
        {
            if(nums[i]==val){
                for(int j=i+1;j<len;j++)
                {
                    nums[j-1]=nums[j];
                }
                //因为数组整体向左移动了一格，所以i得回去原来的地方
                i--;
                len--;
            }
        }
        return len;
    }

    /**
     * 快慢指针法
     * @param nums
     * @param val
     * @return
     */
    public int removeElement1(int[] nums, int val){
        int fast=nums.length;
        int slow=0;
        for(int i=0;i<fast;i++)
        {
            if(val!=nums[i])
            {
                nums[slow++]=nums[i];
            }
        }
        return slow;
    }


    public static void main(String[] args) {
        RemoveArray removeArray = new RemoveArray();
        int []num={2,3,2,4,6};
        int len = removeArray.removeElement1(num, 2);
        System.out.println("元素被删除之后的数组长度为："+len);
    }
}
